package schema

import (
	"fmt"
)

// AppVersion 应用版本管理
type AppVersion struct {
	ID          int64  `json:"id" bson:"_id" structs:"id"`                           // 唯一标识(自增ID)
	RecordID    string `json:"record_id" bson:"record_id" structs:"record_id"`       // 记录内码(uuid)
	DeviceType  string `json:"device_type" bson:"device_type" structs:"device_type"` // 设备类型
	Name        string `json:"name" bson:"name" structs:"name"`                      // 版本名称
	Version     int64  `json:"version" bson:"version" structs:"version"`             // 版本号
	Title       string `json:"title" bson:"title" structs:"title"`                   // 标题
	Description string `json:"description" bson:"description" structs:"description"` // 描述
	Link        string `json:"link" bson:"link" structs:"link"`                      // 下载链接
	Duration    int    `json:"duration" bson:"duration" structs:"duration"`          // 提示升级间隔(单位分钟)
	Upgrade     int    `json:"upgrade" bson:"upgrade" structs:"upgrade"`             // 升级状态(10:可选 20:强制)
	Status      int    `json:"status" bson:"status" structs:"status"`                // 状态(1:启用 2:停用)
	Creator     string `json:"creator" bson:"creator" structs:"creator"`             // 创建人
	Created     int64  `json:"created" bson:"created" structs:"created"`             // 创建时间戳
	Deleted     int64  `json:"deleted" bson:"deleted" structs:"deleted"`             // 删除时间戳
}

// Validate 验证参数
func (a *AppVersion) Validate() error {
	if a.DeviceType == "" ||
		a.Name == "" ||
		a.Upgrade == 0 ||
		a.Status == 0 {
		return fmt.Errorf("无效的请求参数")
	}
	return nil
}

// AppVersionQueryParam 应用版本管理查询参数
type AppVersionQueryParam struct {
	DeviceType string // 设备类型
	Name       string // 版本名称
	Title      string // 标题
	Upgrade    int    // 升级状态(1:可选 2:强制)
	Status     int    // 状态(1:启用 2:停用)
}

// AppVersionQueryResult 应用版本管理查询结果
type AppVersionQueryResult struct {
	ID         int64  `json:"id" bson:"_id" structs:"id"`                           // 唯一标识(自增ID)
	RecordID   string `json:"record_id" bson:"record_id" structs:"record_id"`       // 记录内码(uuid)
	DeviceType string `json:"device_type" bson:"device_type" structs:"device_type"` // 设备类型
	Name       string `json:"name" bson:"name" structs:"name"`                      // 版本名称
	Title      string `json:"title" bson:"title" structs:"title"`                   // 标题
	Duration   int    `json:"duration" bson:"duration" structs:"duration"`          // 提示升级间隔(单位分钟)
	Upgrade    int    `json:"upgrade" bson:"upgrade" structs:"upgrade"`             // 升级状态(1:可选 2:强制)
	Status     int    `json:"status" bson:"status" structs:"status"`                // 状态(1:启用 2:停用)
	Created    int64  `json:"created" bson:"created" structs:"created"`             // 创建时间戳
}
